﻿using System;
using System.Windows.Forms;

namespace CentroVentas.Funciones.Productos
{
    public partial class FunProductosCompraNueva : Form
    {
        private int _idproducto = 0;

        public int Idproducto
        {
            get { return _idproducto; }
            set { _idproducto = value; }
        }
        private int _idprecio = 0;

        public int Idprecio
        {
            get { return _idprecio; }
            set { _idprecio = value; }
        }
       
        public FunProductosCompraNueva(int idproducto)
        {

            InitializeComponent();
            _idproducto = idproducto;
        }

        private void FunProductosCompraNueva_Load(object sender, EventArgs e)
        {
            Clases.Funciones.Producto prod = new Clases.Funciones.Producto(_idproducto);
            txtCodigo.Text = prod.CodigoBarras;
            txtDescripcion.Text = prod.Descripcion;
            txtminimo.Text = prod.minimo.ToString();
            dgvHistorial.DataSource = Clases.Funciones.Core.Precio.getHistorialComprasProducto(_idproducto);
            dgvHistorial.DataMember = "historial";
            dgvHistorial.Columns["ID"].Visible = false;

            txtCosto.Focus();


        }

        private void txtCosto_KeyPress(object sender, KeyPressEventArgs e)
        {

            if (txtCosto.Text.Length == 0)
            {
                txtCosto.Text = "0";
            }
            else
            {
                if (Char.IsDigit(e.KeyChar))
                {
                    e.Handled = false;
                }
                else if (Char.IsControl(e.KeyChar))
                {
                    e.Handled = false;
                }
                else if (Char.IsSeparator(e.KeyChar))
                {
                    e.Handled = false;
                }
                else
                {
                    e.Handled = true;
                }
            }
        }

        private void txtUtilidad_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtUtilidad.Text.Length == 0)
            {
                txtUtilidad.Text = "0";
            }
            else
            {
                if (Char.IsDigit(e.KeyChar))
                {
                    e.Handled = false;
                }
                else if (Char.IsControl(e.KeyChar))
                {
                    e.Handled = false;
                }
                else if (Char.IsSeparator(e.KeyChar))
                {
                    e.Handled = false;
                }
                else
                {
                    e.Handled = true;
                }
            }
        }

        private void txtPrecio_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txtCosto_TextChanged(object sender, EventArgs e)
        {
            if (txtCosto.Text.Length == 0)
            {
                txtCosto.Text = "0";
            }
            else
            {
                txtPrecio.Text = CentroVentas.Clases.Funciones.Producto.getPrecioVenta(Convert.ToDouble(txtCosto.Text), Convert.ToDouble(txtUtilidad.Text), Convert.ToDouble(txtImpuesto.Text)).ToString();
                txtFormateado.Text = CentroVentas.Clases.Currency.formatearMoneda(Convert.ToDouble(txtPrecio.Text));
            }
        }

        private void txtUtilidad_TextChanged(object sender, EventArgs e)
        {
            if (txtUtilidad.Text.Length == 0)
            {
                txtUtilidad.Text = "0";
            }
            else
            {
                if (!chkModificarPrecioFinal.Checked)
                {
                    txtPrecio.Text = CentroVentas.Clases.Funciones.Producto.getPrecioVenta(Convert.ToDouble(txtCosto.Text), Convert.ToDouble(txtUtilidad.Text), Convert.ToDouble(txtImpuesto.Text)).ToString();
                    txtFormateado.Text = CentroVentas.Clases.Currency.formatearMoneda(Convert.ToDouble(txtPrecio.Text));
                }
            }
        }

        private void txtPrecio_TextChanged(object sender, EventArgs e)
        {
            if (chkModificarPrecioFinal.Checked)
            {
                if (txtPrecio.Text.Length == 0)
                {
                    txtPrecio.Text = "0";
                }


                txtUtilidad.Text = CentroVentas.Clases.Funciones.Producto.getUtilidad(Convert.ToDouble(txtCosto.Text), Convert.ToDouble(txtPrecio.Text)).ToString();
                txtFormateado.Text = CentroVentas.Clases.Currency.formatearMoneda(Convert.ToDouble(txtPrecio.Text));
            }
            else
            {
                if (txtPrecio.Text.Length == 0)
                {
                    txtPrecio.Text = "0";
                }
                txtFormateado.Text = CentroVentas.Clases.Currency.formatearMoneda(Convert.ToDouble(txtPrecio.Text));
            }

        }

        private void chkModificarPrecioFinal_CheckedChanged(object sender, EventArgs e)
        {
            txtPrecio.ReadOnly = !chkModificarPrecioFinal.Checked;
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            Clases.Funciones.Core.Precio.AgregarPrecio(_idproducto, Convert.ToDouble(txtCosto.Text), Convert.ToInt32(txtUtilidad.Text), Convert.ToInt32(txtImpuesto.Text), Convert.ToDouble(txtPrecio.Text), Convert.ToInt32(txtCantidad.Value));
            Idprecio = Clases.Funciones.Core.Precio.getUltimoPrecio();
            this.DialogResult = DialogResult.OK;
            this.Dispose();
        }

        private void dgvHistorial_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            Clases.Funciones.Core.Precio pre = new Clases.Funciones.Core.Precio(Convert.ToInt32(dgvHistorial.Rows[e.RowIndex].Cells[0].Value));
            txtCosto.Text = pre.Costo.ToString();
            txtUtilidad.Text = pre.Utilidad.ToString();
            txtPrecio.Text = pre.PrecioVenta.ToString();
            txtCantidad.Value = Convert.ToInt32(pre.Cantidad);            
        }
    }
}
